Although computers were once isolated and had minimal or little interaction with other computers, computers now interact with a wide variety of other computers through Local Area Networks (LANs), Wide Area Networks (WANs), dial-up connections, and the like. With the widespread growth of the INTERNET® computer network, connectivity between computers has become more important and has opened up many new applications and technologies. The growth of large-scale networks, and the wide-spread availability of low-cost personal computers, has fundamentally changed the way that many people work, interact, communicate, and play.
One increasing popular form of networking may generally be referred to as remote presentation, which can use protocols such as Remote Desktop Protocol (RDP), Independent Computing Architecture (ICA), and others to share a desktop and other applications with a remote client. Such computing systems typically transmit the keyboard presses and mouse clicks or selections from the client to a server, relaying the screen updates back in the other direction over a network connection (e.g., the INTERNET®). As such, the user has the experience as if their machine is executing the applications locally, when in reality the client device is only sent screenshots of the applications as they appear on the server side.
In an environment where many remote presentation sessions are to be served concurrently, such as for a large corporation, these remote presentation sessions may be served by a plurality of virtual machines (VMs) on one physical server, or by a grouped plurality of servers, commonly referred to as a server farm or a deployment. The servers of the deployment may perform different roles or role services (a role is configured to perform a specific function for multiple users or other computers within a network). For instance, one server may function as a connection broker that assigns incoming remote presentation session requests to other servers that serve remote presentation sessions.
A remote presentation session deployment (such as a Virtualization Desktop Infrastructure, or VDI deployment) may require a plurality of these roles for the deployment to function. In a VDI context, these may be, for instance, (1) a Remote Desktop Service Host (RDSH) role configured as a Virtual Machine Redirector, that accepts incoming remote presentation session connections from clients; (2) a Remote Desktop Connection Broker (RDCB) that determines among a plurality of remote presentation servers (and possibly a plurality of VMs within a server) a server to conduct the remote presentation session with the client; and (3) a Remote Desktop Virtualization Host (RDVH) that functions as a remote presentation server to the client. An incoming connection from a client to set up a remote presentation session is received at the RDSH role, and then routed to the RDBC. At the RDCB, the set up process is broken into several phases—arbitration, load balancing, and placement. RDCB then re-routes the call to the RDVH in order to complete the final phase of orchestration by bringing the VM online and making sure that the VM is ready to accept a remote presentation session connection.
The complexity of such a deployment is due to the spread of the functionality across multiple roles, which makes it very difficult to deploy this infrastructure. Adding to this complexity is the difficulty in diagnosing a given connection that takes multiple hops across several machine boundaries (virtual machine boundaries or physical machine boundaries) makes it hard to monitor and diagnose connection failures.